package edu.ccut.saturn.studio.saturndata.model;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


import edu.ccut.saturn.component.IDataItem;
import edu.ccut.saturn.component.impl.SaturnDataInfo;

public class SaturnData extends SaturnDataInfo {

	private Comparator<DataItem> comparator = new DataItemComparator();

	private List<DataItem> dataItemList = new ArrayList<DataItem>();

	public SaturnData(String connectionName, String sqlStr, String description,
			String space, String type, String dbType) {

		super(connectionName, sqlStr, description, space, type, dbType);
	}

	public SaturnData() {
		super(null, null, null, null, null, null);
	}

	public List<DataItem> getDataItemList() {
		return this.dataItemList;
	}

	@Override
	public void addDataItem(IDataItem dataItem) {
		super.addDataItem(dataItem);

		if (dataItem instanceof DataItem) {
			this.dataItemList.add((DataItem) dataItem);
		}

		Collections.sort(this.dataItemList, comparator);
	}
	
	public void removeDataItem(DataItem removeDataItem) {
		super.getDataItemMap().remove(removeDataItem.getName());
		
		for (DataItem dataItem : this.dataItemList) {
			if (dataItem.getName().equals(removeDataItem.getName())) {
				this.dataItemList.remove(dataItem);
				
				break;
			}
		}
	}

	private class DataItemComparator implements Comparator<DataItem> {
		public int compare(DataItem o1, DataItem o2) {
			return o1.getName().compareTo(o2.getName());
		}
	}
}
